package FLS.DataAccessObjects;


import java.sql.SQLException;
import java.util.LinkedList;
import java.util.List;
import java.util.Set;

import org.hibernate.HibernateException;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.HibernateTemplate;

import org.springframework.orm.hibernate3.support.HibernateDaoSupport;


import FLS.DataAccessObjects.KundeDao;
import FLS.Model.Kunde;
import FLS.Model.Menü;



public class KundeDao extends HibernateDaoSupport {

/** only used for testing
* Creates and saves a {@link Kunde} object.
* @param vorname
* @param nachname
* @param telefon
*/
public void create(String vorname, String nachname, int plz, String straße, String ort) {
Kunde k = new Kunde();
k.setVorname(vorname);
k.setNachname(nachname);
k.setPlz(plz);
k.setStraße(straße);
k.setOrt(ort);
save(k);
}
public void modify(int id, String vorname, String nachname, int plz,
		String straße, String ort) {
	HibernateTemplate template = getHibernateTemplate();
	Kunde kunde = (Kunde) template.get(Kunde.class, id);
	kunde.setVorname(vorname);
	kunde.setNachname(nachname);
	kunde.setPlz(plz);
	kunde.setStraße(straße);
	kunde.setOrt(ort);
	template.saveOrUpdate(kunde);
	// TODO Auto-generated method stub
	
}
/**
* returns a single gast by its primary db key
* 
* @param id
* @return the Gast
*/
public Kunde findById(int id) {
HibernateTemplate template = getHibernateTemplate();
return (Kunde) template.get(Kunde.class, id);
}

/**
* saves a gast
* 
* @param gast
* @return gast
*/

public Kunde save(Kunde kunde) {
HibernateTemplate template = getHibernateTemplate();
template.saveOrUpdate(kunde);
return kunde;
}

/**
* deletes a kunde
* 
* @param gast
* doesn't work yet, in progress
*/
public void delete(Kunde kunde) {
HibernateTemplate template = getHibernateTemplate();
template.delete(kunde);
//	 "Der Gast kann nicht gel√∂scht werden, da sie bereits Aufenthalte unternommen hat."
}

/**
* @return all Kunde objects from the database.
*/
@SuppressWarnings("unchecked")
public List<Kunde> findAll() {
HibernateTemplate template = getHibernateTemplate();
@SuppressWarnings("rawtypes")
List results = template.loadAll(Kunde.class);
return results;
}

	
}



